class Solution {
public:
    bool isValid(string s) {
        stack<char> st;
        int size = s.size();  

        for(auto ch : s)
        {
            if(ch == '(' || ch == '[' || ch == '{') 
            {
                st.push(ch);
            }
            else //出栈, 匹配字符
            {
                if(st.empty()) return false;
                char left = st.top();
                if(ch == ')' && left != '(') return false;
                if(ch == ']' && left != '[') return false;
                if(ch == '}' && left != '{') return false;

                st.pop();
            }
        }
        if(st.empty())  return true;
        else return false;
    }
};
